<?php
/**
 * 基础控制器
 *
 * @package    app
 * @version    1.0
 * @author     Ray 33705910@qq.com
 * @license    MIT License
 * @copyright  2013 - 2015 Ray
 * @link       http://wangxiaolei.cn
 */

/**
 * 本控制器主要用于：
 * 1.
 * @package  app
 * @extends  Controller
 */

abstract class Controller_BaseController extends Controller_Template {

    public $template = '';
	//当前操作的模块
	public $current_module = '';
	//当前操作的主题
	public $current_theme = '';

	public function before(){
    	parent::before();

    	if(\Session::get('module', false)){
    		$this->current_module = \Session::get('module');
    	}
    	if(\Session::get('theme', false)){
    		$this->current_theme = \Session::get('theme');
    	}

        //如果有微信公众号ID则查找相关数据
        if(\Input::get('account_id', false)){
            $account = \Model_WXAccount::find(\Input::get('account_id'));
            if( ! $account){
                die('无效的公众号ID');
            }else if((! isset($account->wechat_ticket) || ! $account->wechat_ticket)
                || $account->wechat_ticket_valid < time()){
                //如果不存在wechat_ticket或wechat_ticket为空或wechat_ticket_valid已过期则获取jsapi_ticket
                if($account->temp_token_valid < time()){
                    \tools\WechatTools::generate_token($account->id);
                }
                $account = \Session::get('WXAccount', false) ? \Session::get('WXAccount') : $account;
                \tools\WechatTools::generate_ticket($account->temp_token);
            }

            $seller = \Model_Seller::find($account->seller_id);
            \Session::set('WXAccount', $account);
            \Session::set('seller', $seller);

            //微信分享接口默认数据
            $params = array(
                'title' => '标题',
                'share_title' => '分享标题',
                'share_desc' => '分享描述(指定微信朋友时使用)',
                'share_url' => '分享链接(https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=A@1#wechat_redirect)',
                'share_img' => '分享显示的图标',
                'share_type' => '分享类型[music | video | link](指定微信朋友时使用)',
                'share_src' => '分享音乐或视频时必填的文件链接(指定微信朋友时使用)',
            );

            \View::set_global($params);
        }

        /* 检测微信粉丝openid */
        if(\Input::get('wechat_open_id', false) || \Input::get('wechat', false)){
            $this->force_login();
        }
        //读取全局配置项
        if(!\Session::get('GLOBAL_OPTIONS', false)){
            $this->init_global_params();
        }

        \View::set_global('GLOBAL_OPTIONS', \Session::get('GLOBAL_OPTIONS'));
  	}

    /**
    * 判断是否微信链接
    * @param $openId String
    */
    protected function force_login(){
        $openid = false;
        if(\Input::get('wechat', false)){
            $openid = \Input::get('wechat');
        }else if(\Input::get('wechat_open_id', false)){
            $openid = \Input::get('wechat_open_id');
        }

        if( ! $openid){
            return $openid;
        }
        $wechat = \tools\WechatTools::check_wechat($openid);
        if($wechat){
            \Auth::force_login($wechat->user_id);    
        }else{
            die('非法用户，请与服务商联系');
        }
    }

    /**
    *   初始化全局参数 
    **/
    protected function init_global_params(){
        $items = \Model_Option::query()->get();
        $options = array();
        foreach ($items as $key => $value) {
            $options[$value->key] = $value->value;
        }
        \Session::set('GLOBAL_OPTIONS', $options);
    }
}
